package com.ai.dmc.index.common.util;

import com.ai.dmc.index.common.InitParam;

/**
 * @Description :
 * 
 * @author : wucm
 * @date : 2015年8月24日 下午4:51:32
 * @version V1.0
 * 
 */
public class CryptionUtil {
	/**
	 * 
	 * @Description : 加密
	 * @param param
	 * @return
	 * @return String
	 * 
	 * @author : wucm
	 * @date : 2015年8月24日 下午4:52:54
	 * 
	 */
	public static String encrypt(String param) {
		if (null == param) {
			return param;
		}

		String str = param;
		int CRYPTION_TYPE_FLAG = cryptight2int(InitParam.CRYPTION_TYPE);
		
		switch (CRYPTION_TYPE_FLAG) {
		case 1: {
			str = Base64.encode(param);
			break;
		}
		case 2: {
			str = MD5.encode16(param);
			break;
		}
		case 3: {
			str = Base64.encode(param);
			str = MD5.encode16(str);
			break;
		}
		}
		return str;
	}

	/**
	 * @Description:web应该服务器weblogic所在的机器的jdk版本是1.6，
	 * 	而switch()到jdk1.7才支持字符串，故根据加密类型转换为相对于的整数
	 * @author Administrator
	 * @date:
	 */
	private static int cryptight2int(String cryptightType){
		if("base64".equals(cryptightType)){
			return 1;
		}else if("md5".equals(cryptightType)){
			return 2;
		}else if("mix".equals(cryptightType)){
			return 3;
		}
		return 0;
	}
	
	/**
	 * 
	 * @Description : 解密
	 * @param param
	 * @return
	 * @return String
	 * 
	 * @author : wucm
	 * @date : 2015年8月24日 下午4:53:01
	 * 
	 */
	public static String decrypt(String param) {
		if (null == param) {
			return param;
		}

		String str = param;
		int CRYPTION_TYPE_FLAG = cryptight2int(InitParam.CRYPTION_TYPE);
		switch (CRYPTION_TYPE_FLAG) {
		case 1: {
			str = Base64.decode(param);
			break;
		}
		case 2: {
			break;
		}
		case 3: {
			break;
		}
		}
		return str;
	}

	/**
	 * 
	 * @Description : 加密（不可逆，先base64加密，再md5加密）
	 * @param param
	 * @return
	 * @return String
	 * 
	 * @author : wucm
	 * @date : 2015年8月24日 下午4:52:54
	 * 
	 */
	public static String encryptMix(String param) {
		if (null == param) {
			return param;
		}

		param = Base64.encode(param);
		param = MD5.encode16(param);
		return param;
	}

	/**
	 * @Description :
	 * @param args
	 * @return void
	 * 
	 * @author : wucm
	 * @date : 2015年8月24日 下午4:51:32
	 * 
	 */
	public static void main(String[] args) {
		System.out.println(MD5.encode16("ADMIN"));
		System.out.println(MD5.encode16("admin"));
	}

}
